package entity

import (
	"group-card/common/request"
	"time"
)

//region TODO:卡片发行  Author:LiuYanLin Date:2023/03/30 周四 16:34

type CardPublish struct {
	Id                 int64     `xorm:"not null pk autoincr comment('主键ID') BIGINT(20)" json:"id"`                                            // id
	PublishTime        time.Time `xorm:"default null timestamp comment('发行时间')"         json:"publish_time"`                                   // 发行时间
	AdminId            int64     `xorm:"not null default 0 BIGINT(20) comment('操作人id')"             json:"admin_id"`                           // 操作人id
	CustomerId         int64     `xorm:"not null default 0 BIGINT(20) comment('集团客户id')"          json:"customer_id"`                          // 集团客户id
	SkinId             int64     `xorm:"not null default 0 BIGINT(20) comment('卡面编号id')"              json:"skin_id"`                          // 卡面编号id
	Count              int64     `xorm:"not null default 0 BIGINT(20) comment('数量')"                json:"count"`                              // 数量
	BeginNumber        int64     `xorm:"not null default 0 BIGINT(20) comment('起始卡片序列号')"         json:"begin_number"`                         // 起始卡片序列号
	EndNumber          int64     `xorm:"not null default 0 BIGINT(20) comment('截止卡片序列号')"           json:"end_number"`                         // 截止卡片序列号
	Status             int64     `xorm:"not null default 10 BIGINT(20) comment('状态 10添加库存 20确认发行 30取消发行 40批次停用')"               json:"status"` // 状态 10添加库存 20确认发行 30取消发行 40批次停用
	Type               int64     `xorm:"not null default 10 BIGINT(20) comment('类型 10预存费用型 20用户充值型')"                 json:"type"`             // 类型 10预存费用型 20用户充值型
	ServiceNumber      string    `xorm:"not null default '' VARCHAR(255) comment('银行消费券号')"       json:"service_number"`                       // 银行消费券号
	ServiceOrderNumber string    `xorm:"not null default '' VARCHAR(255) comment('服务费订单号')" json:"service_order_number"`                       // 服务费订单号
	ServiceMoney       float64   `xorm:"not null default 0.00 decimal(9,2) comment('服务费金额')"        json:"service_money"`                      // 服务费金额
	CreateAt           time.Time `xorm:"not null created comment('创建时间')"   json:"create_at"`                                                  // 创建时间
	UpdateAt           time.Time `xorm:"not null updated comment('更新时间')"   json:"update_at"`                                                  // 更新时间
	DeleteAt           time.Time `xorm:"not null deleted comment('删除时间')"   json:"delete_at"`                                                  // 删除时间
	OrgId              int64     `xorm:"not null default 0 BIGINT(20) comment('组织ID')"          json:"org_id"`
	Org1               int64     `xorm:"not null default 0 BIGINT(20) comment('一级组织ID')"          json:"org1"`
	Org2               int64     `xorm:"not null default 0 BIGINT(20) comment('二级组织ID')"          json:"org2"`
	Org3               int64     `xorm:"not null default 0 BIGINT(20) comment('三级组织ID')"          json:"org3"`
	Org4               int64     `xorm:"not null default 0 BIGINT(20) comment('四级组织ID')"          json:"org4"`
	Org5               int64     `xorm:"not null default 0 BIGINT(20) comment('五级组织ID')"          json:"org5"`
}

func (*CardPublish) TableName() string {
	return "card_publish"
}

//endregion

type CardPublishReq struct {
	Id                 int64     `json:"id"`                                  // id
	PublishTime        time.Time `json:"publish_time"`                        // 发行时间
	AdminId            int64     `json:"admin_id"`                            // 操作人id
	CustomerId         int64     `json:"customer_id"`                         // 集团客户id
	SkinId             int64     `json:"skin_id"`                             // 卡面编号id
	Count              int64     `json:"count"`                               // 数量
	BeginNumber        int64     `json:"begin_number"`                        // 起始卡片序列号
	EndNumber          int64     `json:"end_number"`                          // 截止卡片序列号
	Status             int64     `json:"status"`                              // 状态 10添加库存 20确认发行 30取消发行 40批次停用
	Type               int64     `json:"type"`                                // 类型 10预存费用型 20用户充值型
	ServiceNumber      string    `json:"service_number"`                      // 银行消费券号
	ServiceOrderNumber string    `json:"service_order_number"`                // 服务费订单号
	ServiceMoney       float64   `json:"service_money"`                       // 服务费金额
	CreateAt           time.Time `xorm:"not null created"   json:"create_at"` // 创建时间
	UpdateAt           time.Time `xorm:"not null updated"   json:"update_at"` // 更新时间
	DeleteAt           time.Time `xorm:"not null deleted"   json:"delete_at"` // 删除时间
	request.BaseReq    `xorm:"-" json:"-"`
}

type CardPublishResp struct {
	Id                 int64     `json:"id"`                                  // id
	PublishTime        time.Time `json:"publish_time"`                        // 发行时间
	AdminId            int64     `json:"admin_id"`                            // 操作人id
	CustomerId         int64     `json:"customer_id"`                         // 集团客户id
	SkinId             int64     `json:"skin_id"`                             // 卡面编号id
	Count              int64     `json:"count"`                               // 数量
	BeginNumber        int64     `json:"begin_number"`                        // 起始卡片序列号
	EndNumber          int64     `json:"end_number"`                          // 截止卡片序列号
	Status             int64     `json:"status"`                              // 状态 10添加库存 20确认发行 30取消发行 40批次停用
	Type               int64     `json:"type"`                                // 类型 10预存费用型 20用户充值型
	ServiceNumber      string    `json:"service_number"`                      // 银行消费券号
	ServiceOrderNumber string    `json:"service_order_number"`                // 服务费订单号
	ServiceMoney       float64   `json:"service_money"`                       // 服务费金额
	CreateAt           time.Time `xorm:"not null created"   json:"create_at"` // 创建时间
	UpdateAt           time.Time `xorm:"not null updated"   json:"update_at"` // 更新时间
	DeleteAt           time.Time `xorm:"not null deleted"   json:"delete_at"` // 删除时间
}
